﻿#define _CRT_SECURE_NO_WARNINGS 1
//rand库函数的使用

//#include <stdio.h>
//#include<stdlib.h>
//
//int main()
//{
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//
//	return 0;
//}


//srand和time库函数的使用
//#include <stdio.h>
//#include<stdlib.h>
//#include<time.h>
//
//int main()
//{
//	srand((unsigned int)time(NULL));
//
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//
//	return 0;
//}

//设置随机数范围为1~100之间
//#include <stdio.h>
//#include<stdlib.h>
//#include<time.h>
//
//int main()
//{
//	srand((unsigned int)time(NULL));
//
//	//%100就是 0~99的区间，加1就是1~100的区间
//	//printf("%d\n", rand() % 100 + 1);
//	//printf("%d\n", rand() % 100 + 1);
//	//printf("%d\n", rand() % 100 + 1);
//	//printf("%d\n", rand() % 100 + 1);
//	//printf("%d\n", rand() % 100 + 1);
//	//printf("%d\n", rand() % 100 + 1);
//	//printf("%d\n", rand() % 100 + 1);
//
//	//那么取100~200之间呢
//	//就是算出1~100的区间后再加100就是100~200的区间了
//	printf("%d\n", 100 + (rand() % 100 + 1));
//	printf("%d\n", 100 + (rand() % 100 + 1));
//	printf("%d\n", 100 + (rand() % 100 + 1));
//	printf("%d\n", 100 + (rand() % 100 + 1));
//
//	return 0;
//}

//练习：结合以上的库函数使用写一个0~100之间的猜数字游戏
//1. 实现菜单
//2. 实现开始游戏和退出游戏的逻辑，还有玩完一次还能再玩的逻辑
//3. 实现猜数字游戏内容的逻辑,产生随机数：
// (1).玩家输入的数字比随机数小
//#include<stdio.h>
//#include<stdlib.h>
//#include<time.h>
//
//void menu()
//{
//	printf("************************\n");
//	printf("******* 1.开始游戏 ******\n");
//	printf("******* 0.退出游戏 ******\n");
//	printf("************************\n");
//}
//
//void game()
//{
//	int input = 0;
//	int random = rand() % 100 +1;// 产生0 ~ 99 + 1的随机数
//
//
//	while (1)
//	{
//		printf("输入你要猜的数字:>");
//		scanf("%d", &input);
//
//		if (input < random)
//		{
//			printf("猜小了\n");
//		}
//		else if (input > random)
//		{
//			printf("猜大了\n");
//		}
//		else
//		{
//			system("cls");
//			printf("恭喜你, 猜对了!\n\n");
//			break;
//		}
//
//	}
//
//}
//
//int main()
//{
//	int option = 0;
//	//使随机数更随机
//	srand((unsigned int)time(NULL));
//
//	do
//	{
//		menu();
//		printf("请输入:>");
//		scanf("%d", &option);
//
//		switch (option)
//		{
//		case 1:
//			game();
//			break;
//		case 0:
//			system("cls");
//			printf("退出游戏\n\n");
//			break;
//		default:
//			system("cls");
//			printf("输入错误，请重新输入！！！\n\n");
//			break;
//		}
//	} while (option);
//
//	return 0;
//}

//一维数组的使用

//#include <stdio.h>
//
//int main()
//{
//	//创建和初始化数组
//	int arr1[10] = { 1,2,3 };//不完全初始化,后面的元素都会自动初始化为0
//	int arr2[] = { 1,2,3,4,5 };//不完全初始化,后面的元素都会自动初始化为0
//	int arr3[10] = { 1,2,3,4,5,6,7,8,9,10 };//完全初始化
//
//	//访问数组里的元素
//	printf("%d\n",arr3[7]);
//	//改数组里的元素
//	arr3[7] = 20;
//
//	//sizeof计算数组的元素个数
//	printf("%zd\n", sizeof(arr3));//计算的是整个数组所占字节数
//	printf("%zd\n", sizeof(arr3[0]));//计算的是数组下标为0所占字节数
//
//	int sz = sizeof(arr3) / sizeof(arr3[0]);//计算数组内的元素个数
//	printf("%d\n", sz);
//
//	//int sz = sizeof()
//
//	//循环打印arr3数组
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr3[i]);
//	}
//
//	return 0;
//}

//二维数组的使用
//#include<stdio.h>
//
//int main()
//{
//	int arr1[3][5] = { 1,2,3,4,5 };//不完全初始化
//	int arr2[][5] = { 1,2,3,4,5,6 };//不完全初始化，二维数组的创建可以省略行但不能省略列
//	int arr3[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };//按照行进行初始化
//
//	//访问二维数组中的元素
//	printf("%d\n", arr3[2][4]);//访问7这个元素就用第2行4列访问
//
//	//修改二维数组的元素
//	arr3[2][4] = 40;
//	printf("%d\n", arr3[2][4]);
//
//	//二维数组的输出
//	int i = 0;
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", arr3[i][j]);
//		}
//	}
//	printf("\n");
//
//	//二维数组的输入
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			scanf("%d", &arr3[i][j]);
//		}
//	}
//
//	for (i = 0; i < 3; i++)
//	{
//		int j = 0;
//		for (j = 0; j < 5; j++)
//		{
//			printf("%d ", arr3[i][j]);
//		}
//	}
//	printf("\n");
//
//	return 0;
//}

//C99引入的变长数组
//#include<stdio.h>
//
//int main()
//{
//	int n = 10;
//	int arr[n];//变长数组的意思就是可以用变量去初始化一个数组，但这个数组不能手动进行初始化
//
//	return 0;
//}

//练习1：多个字符从两端移动，向中间汇聚
//#include<stdio.h>
//#include<string.h>
//#include<Windows.h>
//#include<stdlib.h>
//
//int main()
//{
//	char str1[] = "hello world!!!";
//	char str2[] = "**************";
//	int left = 0;
//	int right = strlen(str1)-1;
//
//	printf("%s\n", str2);
//	while (left <= right)
//	{
//		Sleep(1000);//系统休眠库函数，单位是毫秒
//		system("cls");//起控制台清屏
//		str2[left] = str1[left];
//		str2[right] = str1[right];
//		printf("%s\n", str2);
//		left++;
//		right--;
//	}
//
//	return 0;
//}

//练习：在⼀个升序的数组中查找指定的数字key
//#include<stdio.h>
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//二分查找法
//	int key = 7;
//
//	int left = 0;
//	int right = sizeof(arr) / sizeof(arr[0]) - 1;
//	int flag = 0;
//
//	while (left <= right)
//	{
//		int mid = (left + right) / 2;
//
//		if (key > mid)
//		{
//			left = mid + 1;
//		}
//		else if (key < mid)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是: %d\n", mid);
//			flag = 1;
//			break;
//		}
//	}
//
//	if (!flag)
//	{
//		printf("没找到!\n");
//	}
//
//	return 0;
//}

//优化mid的计算
//#include<stdio.h>
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	//二分查找法
//	int key = 7;
//
//	int left = 0;
//	int right = sizeof(arr) / sizeof(arr[0]) - 1;
//	int flag = 0;
//
//	while (left <= right)
//	{
//		//int mid = (left + right) / 2;//left和right的数据有可能会很大，相加可能超出了类型的取值范围
//		int mid = left + (right - left) / 2;
//
//		if (key > mid)
//		{
//			left = mid + 1;
//		}
//		else if (key < mid)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是: %d\n", mid);
//			flag = 1;
//			break;
//		}
//	}
//
//	if (!flag)
//	{
//		printf("没找到!\n");
//	}
//
//	return 0;
//}

//自定义函数的使用
// 写⼀个加法函数，完成2个整型变量的加法操作
//#include<stdio.h>
//
//int Add(int x, int y)
//{
//	return x + y;
//}
//
//int main()
//{
//	int num1 = 0;
//	int num2 = 0;
//	scanf("%d%d", &num1, &num2);
//
//	int ret = Add(num1, num2);
//	printf("%d\n", ret);
//
//	return 0;
//}

//一维数组做函数参数
//#include<stdio.h>
//
//void print(int arr[], int sz)
//{
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//}
//
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print(arr, sz);
//
//	return 0;
//}

//二维数组做函数参数
//#include<stdio.h>
//
//void print(int arr[3][5], int line, int colum)
//{
//	int i = 0;
//	for (i = 0; i < line; i++)
//	{
//		int j = 0;
//		for (j = 0; j < colum; j++)
//		{
//			printf("%d ", arr[i][j]);
//		}
//		printf("\n");
//	}
//}
//
//int main()
//{
//	int arr[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };
//
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	print(arr, 3,5);
//
//	return 0;
//}

//函数的嵌套调⽤
//假设我们计算某年某⽉有多少天？如果要函数实现，可以设计2个函数:
//• is_leap_year()：根据年份确定是否是闰年
//• get_days_of_month()：调⽤is_leap_year确定是否是闰年后，再根据⽉计算这个⽉的天数
//#include<stdio.h>
//#include<stdbool.h>
//
//bool is_leap_year(int year)
//{
//	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
//	{
//		return true;//是闰年
//	}
//
//	return false;//不是闰年
//}
//
//int get_days_of_month(int year, int month)
//{
//	if (month > 12)
//	{
//		return -1;
//	}
//
//	int arr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
//	//				0 1  2  3  4  5  6  7  8  9  10 11 12
//	if (month == 2 && is_leap_year(year))
//	{
//		return arr[month] + 1;
//	}
//	
//	return arr[month];
//}
//
//int main()
//{
//	int year = 0;
//	int month = 0;
//	scanf("%d%d", &year, &month);
//
//	int day = get_days_of_month(year, month);
//	printf("%d年-%d月 -> %d天\n", year, month, day);
//
//	return 0;
//}

//多文件应用
#include<stdio.h>
#include "add.h"

int main()
{
	int num1 = 0;
	int num2 = 0;
	scanf("%d%d", &num1, &num2);

	int ret = Add(num1, num2);
	printf("%d\n", ret);

	return 0;
}